/**
 * 在地图上获取经纬度
 */

function MapCoords(container, settings){
	var defaultOptions = {
			path: '',
			type:null,
			parkid:null,
			view: false,
			size: 200,
			center: "河北",//{lng:lng, lat:lat}
			zoom: 15,
			marker: null,//{lng:lng, lat:lat, type:type, id:id, name:name}
			boundary: null,//边界名（省、市或县的名称）
			onMapStatus: null,//地图状态
			onMarkerDragend: null//参数：中心坐标{lng:lng, lat:lat}
		};
	var g = this, p = jQuery.extend({}, defaultOptions, settings);;
	g._marks = new JSHashtable();
	g._datas = new JSHashtable();
	
	g._init = function(){
		g.view = (p.view===true || p.view==='true');
		g.map = new qq.maps.Map(container, {
	        center: new qq.maps.LatLng(p.center.lat, p.center.lng),
	        zoom: (p.zoom || 15),
	        mapTypeId: qq.maps.MapTypeId.ROADMAP,
	        zoomControlOptions: {
	            style: qq.maps.ZoomControlStyle.SMALL
	        }
	    });
		g.map.panTo(new qq.maps.LatLng(p.center.lat, p.center.lng));
		
		qq.maps.event.addListener(g.map, 'bounds_changed', function(){
			g._load();
		});
		
		var center = p.marker;
		if(!center){
			var latLng = g.map.getCenter();
			center = {lat: latLng.getLat(), lng: latLng.getLng()};
		}
		
		var opt = {position: new qq.maps.LatLng(center.lat, center.lng), map: g.map}, icon = g._getMarkerIcon(p.type);
		if(icon){
			opt.icon = icon;
		}
		g.curMarker = new qq.maps.Marker(opt);
		if(!g.view){
			g.curMarker.setDraggable(true);
			if(p.onMarkerDragend){
				qq.maps.event.addListener(g.curMarker, 'position_changed', function(){
					var latLng = g.curMarker.getPosition();
					p.onMarkerDragend.call(g, {lat: latLng.getLat(), lng: latLng.getLng()});
				});
			}
		}
		if(p.onMarkerDragend){
			p.onMarkerDragend.call(g, center);
		}
		
		g._load();
	};
	
	g._mapStatus = function(message){
		if(p.onMapStatus){
			var latLng = g.map.getCenter();
			center = {lat: latLng.getLat(), lng: latLng.getLng()};
			var status = {center: center, zoom: g.map.getZoom()};
			var bounds = g.map.getBounds();
			if(bounds){
				var northEast = bounds.getNorthEast(), southWest = bounds.getSouthWest();
				if(northEast && southWest){
					status.bounds = {E: northEast.getLng(), S: southWest.getLat(), W: southWest.getLng(), N: northEast.getLat()};
				}
			}
			if(message){
				status.message = message;
			}
			p.onMapStatus.call(g, status);
		}
	};
	
	//获取标注坐标
	g.getMarkerCoords = function(){
		if(g.curMarker){
			var latLng = g.curMarker.getPosition();
			return {lat: latLng.getLat(), lng: latLng.getLng()};
		}
		return null;
	};
	
	//设置标注坐标
	g.setMarkerCoords = function(lng, lat){
		if(!g.curMarker){
			return;
		}
		g.curMarker.setPosition(new qq.maps.LatLng(lat, lng));
		if(p.onMarkerDragend){
			p.onMarkerDragend.call(g, {lng: lng, lat: lat});
		}
	};
	
	//获取标注图标
	g._getMarkerIcon = function(type, mini){
		return null;
	};
	
	g._load = function(){
		var latLng = g.map.getCenter();
		g._mapStatus();
		g.setMarkerCoords(latLng.getLng(), latLng.getLat());
	};
	
	g._init();
}




